Глава 24

Технология Web Distributed Data Exchange

Web Distributed Data Exchange (WDDX) — это новая технология, основанная на базе расширенного языка разметки XML (Extensible Markup Language) и представленная корпорацией Allaire. Применение модели WDDX облегчает компаниям обмен структурированными данными между Web-приложениями. WDDX дает компаниям возможность создать "Web Syndicate Networks" (Сетевые Web-синдикаты), где содержимое и коммерческие активы любого Web-сайта могут быть представлены как услуги другим Web-сайтам. Эта технология делает возможными появление и развитие новых видов бизнеса в Web и увеличивает способность к взаимодействию между различными прикладными платформами.

В простейшей своей форме WDDX может использоваться для обмена данными без необходимости непосредственного применения XML. Это позволяет разработчикам легко создавать приложения типа "браузер-сервер" для связки данных, подобные традиционным системам клиент-сервер, автономным Web-приложениям и распределенным приложениям типа "сервер-сервер". Наибольшие возможности открываются при использовании технологии для объединения приложений в так называемые "синдикаты". С помощью WDDX Web-сайт, построенный на основе Perl, может легко обмениваться содержимым баз данных и представить все операции и процедуры на Web-сайте, созданном с помощью платформы типа ColdFusion, ASP или других серверов Web-приложений.

"WDDX обеспечивает богатую основу для объединения в "синдикаты", — сказал Джереми Эллэйр (Jeremy Allaire), вице-президент по стратегии технологии, в настоящий момент занимающий пост технического директора корпорации Macromedia. — Поскольку тысячи организаций используют Web, и новые компании появляются вокруг Web бизнес-модели, жизненно важно, чтобы приложения, разработанные для поддержки on-line бизнеса, могли бы легко управлять активами приложения других компаний, независимо от платформы, на которой они были созданы. Через такую способность к взаимодействию Web станет основой для новых бизнес-моделей, основанных на сетевых "синдикатах"".

"WDDX решает серьезнейшие проблемы, связанные с обменом данными между различными средами Web-программирования, — сказал Г. Хуссейн Чиной (G. Hussain Chinoy), CEO и главный информационный менеджер компании Granularity Information Architecture, Inc. — С помощью WDDX мы легко можем создавать приложения для электронной коммерции и EDI-систем, использующих любую платформу сервера приложения или инструмент разработки, будь то ColdFusion, ASP, Perl или Java, и знать, что наш вклад может управляться любым другим разработчиком на любой другой платформе. WDDX открывает дверь прямо в мир языков программирования."

Распределение и совместимость платформ

WDDX — это бесплатная, открытая технология, доступная в виде комплекта для разработки обеспечения (SDK) на спонсируемом корпорацией Allaire Web-сайте WDDX.org (OpenWDDX.org), созданном, чтобы облегчить постоянное развитие и распространение WDDX. WDDX SDK доступен для любой платформы, которая поддерживает XML и популярные языки Web-программирования. SDK включает в себя библиотеки, образец кода, справочные материалы и документацию. И Web-сайт, и SDK были созданы, чтобы сделать возможным взаимодействие между Web-приложениями, и способствовать появлению новых бизнес-моделей на основе объединенных Web-сетей.

"WDDX решает целый ряд проблем, знакомых опытным разработчикам Web-приложений, таких как: распределение приложений, хранение комплексных данных и обмен данными при использовании различных языков программирования, — сказал Бен Арчибальд (Ben Archibald), основатель компании ChangeMedia. — В ChangeMedia мы поняли захватывающую эффективность разработки путем хранения комплексных объектов данных в родственных таблицах или простых файлах. Используя WDDX, мы можем избежать традиционного анализа при повышении мобильности информации между SQL-платформами."

Тег <CFWDDX>

Синтаксис:

<CFWDDX ACTION = "CFML2WDDX | WDDX2CFML | CFML2-JS | WDDX2JS" INPUT = "Inputdata" OUTPUT = "ResultVariableName"

TOPLEVELVMIABLE = "TopLevelVariableNameforJavaScript" USETIMEZONEINFO = "Yes | No"

VALIDATE = "Yes | No">

В табл. 24.1 представлено описание атрибутов тега <CFWDDX>.

Таблица 24.1. Описание атрибутов тега <CFWDDX>

Атрибут

Описание

ACTION

Действие. Возможные значения:

  • CFML2WDDX - сериализует из CFML- в WDDX-формат;
  • WDDX2CFML — десериализует из WDDX- в CFML-формат;
  • CFML2 JS — сериализует из CFML- в JavaScript-формат;
  • WDDX2 JS — десериализует из WDDX в JavaScript. Обязательный атрибут

INPUT

Значение, представленное для обработки". Обязательный атрибут

OUTPUT

Наименование переменной, которой присваивается результат выполнения действия. Обязательный атрибут для действия WDDX2CFML, во всех остальных действиях при отсутствии определения данного атрибута результат выполнения тега будет выведен в поток HTML

TOPLEVELVARIABLE

Наименование объекта JavaScript, создаваемого определяемым процессом. Обязательный атрибут только для действий CFML2 JS И WDDX2 JS

USETIMEZONEINFO

Индикатор принятия во внимание информации часового пояса. Возможные значения:

• Yes — да (по умолчанию); • No — нет. Необязательный атрибут

VALIDATE

Индикатор выполнения проверки ошибок. Возможные значения:

• Yes— да; • No — нет (по умолчанию).

Необязательный атрибут

 

Пример использования WDDX

Идея WDDX состоит в том, чтобы преобразовать (сериализовать) любую стандартную структуру данных: целое число, строку, массив, запрос и т. д. — в представление в формате XML, соответствующее тому или иному определению типов документов. Затем эти данные можно переслать по любому протоколу связи, способному передавать документы XML: FTP, HTTP,

SMTP и т. п. В свою очередь, данные могут быть обратно преобразованы (десериализованы) из формата WDDX в исходную структуру. При этом типы преобразованных данных остаются неизменными, если вы сериализуете запрос или массив в пакет WDDX, то при обратном преобразовании полученные данные примут тип запроса или массива соответственно. Например:

<HTML> <HEAD>

<TITLE>WDDX Query</TITLE>

</HEAD> <BODY>

< ! --- Создаем запрос --- >

<CFQUERY NAME="QueryTour" DATASOURCE="#application. dsnt"> SELECT Name_tou, NumLandingPlaces_tou,

Time_tou, CostAdult_tou FROM Tour </CFQUERY>

< ! --- Сериализация данных из CFML- в WDDX-формат --- >

<CFWDDX ACTION = "CEML2WDDX"

INPUT = #QueryTour# OUTPUT = "varWDDX">

<i>WDDX XML packet :</i><br>

<table width="100%">

<tr><td><CFOUTPUT>#varWDDX#</CFOUTPUT></td></tr>

</table>

< ! --- Десериализация из WDDX в CFML --- >

<CFWDDX ACTION = "WDDX2CEML"

INPUT = #varWDDX# OUTPUT = "DeQueryTour">

<br><i>Deserializing WDDX packet :

<CFTABLE QUERY="DeQueryTour" COLHEADERS="Yes"

COLSPACING="0" HEADERLINES="1">

<CFCOL HEADER = "<b>Name tour</b>" WIDTH = "27" ALIGN = "Left"

TEXT = "#Name__tou#">

<CFCOL HEADER = "<b>Places</b>" WIDTH = "5" ALIGN = "Right"

TEXT = "#NumLandingPlaces_tou#"> <CFCOL HEADER = "<b>Time</b>" WIDTH = "9" ALIGN = "Right"

TEXT = "#Time_tou#">

<CFCOL HEADER = "<b>Adults</b>" WIDTH = "9" ALIGN = "Right"

TEXT = "#CostAdult_tou#"> </CFTABLE> </BODY> </HTML>

В приведенном примере создается запрос QueryTour, впоследствии сериали-зованный в пакет WDDX, и затем уже десериализованный в объект запроса DeQueryTour.

Таким же образом вы можете преобразовывать данные в JavaScript как из CFML, так и из WDDX, используя при этом с тегом <CFWDDX> такие действия, Как CFML2JS и WDDX2JS.

Языковая поддержка WDDX

WDDX SDK обеспечивает модули для JavaScript l.x, ColdFusion, COM, Perl и Java. С модулем COM, WDDX может использоваться внутри Active Server Pages, Visual Basic, Delphi, Java, PowerBuilder, C++ и Microsoft Office.